package lyc.springcloud.admin.controller.systemManagerController;

import lombok.extern.slf4j.Slf4j;
import lyc.springcloud.admin.dto.systemManagerDto.RoleManagerDto;
import lyc.springcloud.admin.service.def.systemManagerService.RoleManagerService;
import lyc.springcloud.admin.utils.CommonResClass;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/systemManager/roleManager")
@Slf4j
public class RoleManagerController {
    @Autowired
    private RoleManagerService roleManagerService;

    /**
     * 角色管理---查询所有启用资源tree（包括菜单和功能）
     * */
    @PostMapping("selectEnableResourceTree")
    public CommonResClass selectEnableResourceTree(){
        try {
            Map<String, Object> map =  roleManagerService.selectEnableResourceTree();
            return CommonResClass.success(map);
        } catch (Exception e) {
            log.error("查询所有启用资源tree", e);
            return CommonResClass.failure();
        }
    }

    /**
     * 角色管理---根据角色ID查询所有角色下启用的资源tree（包括菜单和功能）
     * */
    @GetMapping("selectEnableResourceTreeByRoleId")
    public CommonResClass selectEnableResourceTreeByRoleId(@RequestParam("roleId") String roleId){
        try {
            Map<String, Object> map =  roleManagerService.selectEnableResourceTreeByRoleId(roleId);
            return CommonResClass.success(map);
        } catch (Exception e) {
            log.error("根据角色ID查询所有角色下启用的资源tree", e);
            return CommonResClass.failure();
        }
    }

    /**
     * 角色管理---新增
     * */
    @PostMapping("insert")
    public CommonResClass roleMng_insert(@RequestBody RoleManagerDto params){
        try {
            roleManagerService.roleMng_insert(params);
            return CommonResClass.success();
        } catch (Exception e) {
            log.error("角色管理---新增", e);
            return CommonResClass.failure();
        }
    }

    /**
     * 角色管理---查询
     * */
    @PostMapping("select")
    public CommonResClass roleMng_select(@RequestBody RoleManagerDto params){
        try {
            Map<String, Object> map =  roleManagerService.roleMng_select(params);
            return CommonResClass.success(map);
        } catch (Exception e) {
            log.error("角色管理---查询", e);
            return CommonResClass.failure();
        }
    }

    /**
     * 角色管理---编辑
     * */
    @PostMapping("update")
    public CommonResClass roleMng_update(@RequestBody RoleManagerDto params){
        try {
            roleManagerService.roleMng_update(params);
            return CommonResClass.success();
        } catch (Exception e) {
            log.error("角色管理---编辑", e);
            return CommonResClass.failure();
        }
    }

    /**
     * 角色管理---删除
     * */
    @GetMapping("delete")
    public CommonResClass roleMng_delete(@RequestParam("roleIds") String roleIds){
        try {
            roleManagerService.roleMng_delete(roleIds);
            return CommonResClass.success();
        } catch (Exception e) {
            log.error("角色管理---删除", e);
            return CommonResClass.failure();
        }
    }
}
